package com.springday2mybatis;

import com.springday2mybatis.dao.AccountDao;
import com.springday2mybatis.domain.Account;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;

public class App2 {
    public static void main(String[] args) throws Exception {
//        1.通过Resources工具类读取MyBatis配置文件
        InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");

//        2.创建SqlSessionFactoryBuilder对象，目的就是用来构建SqlSessionFactory
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

//        3.使用SqlSessionFactoryBuilder的build方法，并根据配置文件构建SqlSessionFactory对象
//        SqlSessionFactory是MyBatis的核心接口，用于创建SqlSession
        SqlSessionFactory factory = sqlSessionFactoryBuilder.build(inputStream);

//        4.通过SqlSessionFactory对象打开一个新的SqlSession
//        SqlSession提供了执行SQL命令、获取Mapper接口和管理事务的方法
        SqlSession sqlSession = factory.openSession();

//        5.使用SqlSession的getMapper方法获取AccountDao接口的代理对象
//        AccountDao是一个Mapper接口，定义了数据库操作方法
//        MyBatis会根据配置文件中的Mapper注册信息，自动创建该接口的代理对象
        AccountDao accountDao = sqlSession.getMapper(AccountDao.class);

//        调用AccountDao接口的findById方法，根据ID查询账户信息
        Account ac = accountDao.findById(1);
        System.out.println("ac" + ac);

//        6.关闭SqlSession，释放数据库连接等资源
        sqlSession.close();
    }
}
